package org.z23.agentwork.work;

import jakarta.annotation.Resource;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

@Service
public class Agent2 {

    private final ChatClient chatClient;

    public Agent2(ChatClient.Builder chatClientBuilder, ToolCallbackProvider tools) {
        String systemPrompt = """
                你作为穿衣助手Agent，请严格按以下步骤为用户推荐穿衣搭配：
             
                ### 步骤1：检查是否成功获取天气信息
                此时不要返回给用户任何结果，因为还需要进行下一个步骤
                
                ### 步骤2：根据天气信息获取穿衣建议
                调用MCP Server工具'根据天气信息获取穿衣建议'获取穿衣建议，参数：weatherInfo，从上一步获取的天气信息的输出结果赋值weatherInfo。
                
                ### 步骤3：返回建议
                将你所获得的结果返回，如果获取结果失败，则返回空结果
                """;
        this.chatClient = chatClientBuilder.defaultSystem(systemPrompt).defaultToolCallbacks(tools).build();
    }

    public String getDressingAdvice(String weatherInfo) {
        String PROMPT_TEMPLATE = "根据天气获取穿衣建议，";
        Prompt prompt = new Prompt(new UserMessage(PROMPT_TEMPLATE.replace("{weatherInfo}", weatherInfo)));
        return chatClient.prompt(prompt).call().content();
    }
}
